package com.ruoyi.result.papers.domain.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.system.domain.result_entity.Author;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 论文对象 result_papers
 *
 * @author ruoyi
 * @date 2025-01-13
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("result_papers")
@ApiModel("论文管理")
public class ResultPapersVO extends BaseEntity
{
    private static final long serialVersionUID = 1L;


    @ApiModelProperty("角色id")
    private Long roleId;

    @ApiModelProperty("角色名称")
    private String roleName;

    @ApiModelProperty("部门id")
    private Long deptId;

    @ApiModelProperty("部门名称")
    private String deptName;

    @ApiModelProperty("用户昵称")
    private String nickName;

    /** 主键，自增 */
    @ApiModelProperty("唯一标识符")
    @TableField("id")
    private Long id;

    /** 论文标题 */
    @ApiModelProperty("论文标题")
    @TableField("title")
    @Excel(name = "论文标题")
    private String title;

    /** 论文类型 */
    @ApiModelProperty("论文类型")
    @TableField("paper_type")
    @Excel(name = "论文类型")
    private String paperType;

    /** 论文领域 */
    @ApiModelProperty("论文领域")
    @TableField("research_field")
    @Excel(name = "论文领域")
    private String researchField;

    /** 位序 */
    @Excel(name = "位序")
    private Long authorRank;

    /** 是否为通讯作者（是/否） */
    @Excel(name = "是否为通讯作者", readConverterExp = "是=/否")
    private Integer correspondingAuthor;

    /** 刊物名称 */
    @Excel(name = "刊物名称")
    private String journalName;

    /** 收录检索 */
    // ResultPapers 类（数据库实体类）
    @TableField("indexing") // 对应数据库的 indexing 字段
    private String indexing; // 用 String 接收原始字符串（如 "SCI,SSCI"）

    /** 发表时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发表时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date publishDate;

    /** DOI号 */
    @Excel(name = "DOI号")
    private String doi;

    /** 引用次数 */
    @Excel(name = "引用次数")
    private Long citationCount;

    /** 关键词 */
    @Excel(name = "关键词")
    private String keywords;

    /** 起止页码 */
    @Excel(name = "起止页码")
    private String pageRange;

    /** 关联课题 */
    @Excel(name = "关联课题")
    private Long projectId;

    /** 作者信息（存储作者信息及单位） */
    @ApiModelProperty("作者信息")
    @TableField("author_info")
    @Excel(name = "作者信息", readConverterExp = "存=储作者信息及单位")
    private List<Author> authorInfo;

    /** 影响因子 */
    @Excel(name = "影响因子")
    private BigDecimal impactFactor;

    /** 卷号 */
    @Excel(name = "卷号")
    private Long volumeNumber;

    /** 期号 */
    @Excel(name = "期号")
    private Long issueNumber;

    /** ISSN号 */
    @Excel(name = "ISSN号")
    private String issn;

    /** CN号 */
    @ApiModelProperty("CN号")
    @TableField("cn_number")
    @Excel(name = "CN号")
    private String cnNumber;

    /** 摘要 */
    @ApiModelProperty("摘要")
    @TableField("abstract_content")
    @Excel(name = "摘要")
    private String abstractContent;

    /** 备注信息 */
    @Excel(name = "备注信息")
    private String remarks;

    /** $column.columnComment */
    @ApiModelProperty("PDF文件路径")
    @TableField("pdf_url")
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String pdfPath;

    /** 成功同步 */
    @Excel(name = "成功同步")
    private String syncStatus;

    private Date createdAt;

    private Date updatedAt;

    @ApiModelProperty("关联用户id")
    private Long userId;

}
